//导入路由
const router = require('express').Router()
// 导入用户类
const User = require('../models/userModel')
// 导入jwt模块 （jsonwebtoken）
const Jwt = require('../common/token/jwt')
//导入aes加密模块
const aes = require('../common/aes/index')
// 创建用户类的实例
const userModel = new User()

//GET请求方式



//POST请求方式
// 注册接口
// 地址： /api/user/add
// 方式： POST
// 参数： user_name, user_email, user_phone, user_password
// 响应数据格式： json格式
// 示例： http://localhost:4000/api/user/register
router.post('/register', async (req, res) => {
    // 接收前端提交的表单信息
    let { user_name, user_email, user_phone, user_password } = req.body || req.query;
    
    console.log(user_name, user_email,user_phone, user_password);
    
    if (user_name == undefined || user_email == undefined || user_phone == undefined || user_password == undefined) {
        res.send({
            code: 4004,
            msg: "缺少参数，请重新提交"
        })
    }
    else {
        await userModel.register(user_name, user_email, user_phone, user_password)
            .then(
                data => {
                    // 把注册的结果响应给前端
                    res.send(data);
                },
                err => {
                    // 发生了错误
                    res.send(err);
                }
            )
    }
})

// 登录接口
// 地址： /api/user/login
// 方式： POST
// 参数： user_phone, user_password
// 响应数据格式： json格式
// 示例： http://localhost:4000/api/user/login
router.post('/login', async (req,res)=> {
    let { user_phone,user_password } = req.body;
    if(user_phone == undefined || user_password == undefined) {
         // 缺少值
         res.send({
            code: -1,
            msg: "缺少参数，请重新提交"
        })
    }
    else {
        // 调用用户类登录方法
        userModel.login(user_phone, user_password)
        .then(
            data=>{
                // 把登录的结果响应给前端
                // 处理token（用户临时身份）
                console.log(data);
                
                let id = data.id;
                let token = new Jwt(id).getToken();
                if(data.code == 200) {
                    // 登录成功才有token
                    res.send({
                        code: data.code,
                        msg: data.msg,
                        id,
                        nickName: data.nickName,
                        token 
                    });
                }
                else {
                    // 登录失败
                    res.send(data);
                }
            },
            err=> {
                // 发生了错误
                res.send(err);
            }
        )
    }
})

// 修改用户密码
// 地址： /api/user/pwd
// 方式： POST
// 参数： user_email, user_password
// 响应数据格式： json格式
// 示例： http://localhost:4000/api/user/pwd
router.post('/pwd', async (req,res)=> {
    // 获取用户的临时身份
    let {user_email,user_password} = req.body;
    console.log(req.body);
    
    console.log(user_email,user_password);
    
    if(user_email && user_password){
        // 设置用户密码
        await  userModel.pwd(user_email,user_password)
        .then(
            content=>{
                // 把设置用户密码的结果响应给前端
                res.send(content)
            },
            err=> {
                // 发送异常
                res.send(err)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数"
        })
    }
})

// 获取用户信息接口
// 地址： /api/user/info
// 方式： POST
// 参数： token
// 响应数据格式： json格式
// 示例： http://localhost:4000/api/user/info
router.post('/info', async (req,res)=> {
    // 获取用户的临时身份
    let token = req.body.token || req.headers.token;
    console.log(token);
    console.log(req.body);
    
    if(token){
        let result = new Jwt(token).verifyToken();
        if(result.code == 200) {
            
            // 获取用户id
            let id = result.info.data;
            // 获取用户详情信息
            await  userModel.info(id)
            .then(
                content=>{
                    // 把获取用户详情信息的结果响应给前端
                    res.send(content)           
                },
                err=> {
                    // 发送异常
                    res.send(err)
                }
            )
        }
        else {
            res.send({
                code: -1,
                msg: "登录已经失效了，请重新登录"
            })
        }
        
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数111"
        })
    }
})

// 编辑用户信息接口
// 地址： /api/user/edit
// 方式： POST
// 参数： token, user_name, user_email, user_phone,user_sex
// 响应数据格式： json格式
// 示例： http://localhost:4000/api/user/edit
router.post('/edit', async (req,res)=> {
    // 获取用户的临时身份
    let token = req.body.token || req.headers.token;
    let {user_name,user_email,user_phone,user_sex} = req.body;
    if(token){
        let result = new Jwt(token).verifyToken();
        if(result.code == 200) {
            // 获取用户id
            let id = result.info.data;
            // 设置用户信息
            await  userModel.edit(id,user_name,user_email,user_phone,user_sex)
            .then(
                content=>{
                    // 把编辑用户信息的结果响应给前端
                    res.send(content)
                },
                err=> {
                    // 发送异常
                    res.send(err)
                }
            )
        }
        else {
            res.send({
                code: -1,
                msg: "登录已经失效了，请重新登录"
            })
        }
        
    }
    else {
        res.send({
            code: -1,
            msg: "缺少参数"
        })
    }
})



//挂载路由
module.exports = router
